Eggplant DAIでのAction
Eggplant DAIを使用すると、システムがテスト対象(SUT)のモデルを作成し、Eggplant DAIがあなたのシステムでテストを生成するためにそのアルゴリズムを使用することができます。モデルは_state_と_Action_で構成されています。stateとは、インターフェイスの個々の画面などのことを指します。Actionとは、特定の画面でユーザーが行ったり、ユーザーを画面間で移動させたりすることを指します。
モデルを実行すると、Eggplant DAIエンジンがフォローするパスを選択し、そのアルゴリズムと可能なステップに基づいて各Actionを決定します。SUTに対してテストを実行するには、FusionエンジンからSenseTalkスニペットをActionにリンクします。
stateに関する詳細情報は、Eggplant DAIでのstateの定義を参照してください。
Actionの種類
Eggplant DAIには3つのActionがあります:
- Normal: これらのActionは他のActionに対して特定の順序で実行する必要はありません。これが最も一般的なActionのタイプです。
- Sequent: これらのActionは特定の他のActionに対して特定の順序で実行する必要があります。
- Previous: これらのActionはモデルを前のstateに戻します。つまり、現在のstateに移行する原因となったstateに戻します。
Actionの種類を変更するには、Actionを選択し、Action PropertiesタブのTypeリストメニューを使用して、希望のActionタイプを選択します。Actionプロパティの詳細については、Setting Action Properties を参照してください。
Actionを同じstateにリンクする
前のActionタイプは、state変更を引き起こすために特別に事前に定義されたActionがある唯一のタイプです。他のActionタイプは、添付されたSenseTalkスニペットで定義されたActionを実行します。したがって、新しいstateを呼び出すようにActionをしたい場合、スニペットコードはそれを明示的に行う必要があります。
モデルのデフォルトの動作は、同じstateにとどまることです。state変更は、Actionによってstate変更が呼び出されたときにのみ発生します。たとえば、呼び出されたActionがUIのボタンをクリックするか、フィールドにテキストを入力する場合、Actionは実行され、次にEggplant DAIアルゴリズムが同じstateから次のActionを選択します。Action自体がstate変更を引き起こさないと仮定します。
言い換えれば、Actionを親のstateにリンクするためのActionは必要ありません(または利用可能ではありません)。新しいstateが明示的に要求されるまで、すべてのActionはそのstateにとどまります。
Actionの作成
モデルのstateにActionを追加するには、以下の手順を実行します:
- Modelワークスペースで、興味のあるstateを選択します。
- Actionを作成します。以下のどちらかの方法を使用します:
- ツールバーでNew Actionをクリックします。
- 選択したstateで右クリックします。ActionリストからNew Actionを選択します。
- Use
Ctrl+Shift+A
. 新しいActionが表示され、Action Propertiesタブが選択され、入力の準備ができています。
- Actionプロパティの設定のガイドラインに従ってActionを設定します。
Actionは、左ペインのModel Treeタブに表示されます。state内のActionはそのstateの下の階層に、グローバルAction(以下で説明)はstateと同じレベルのツリーに表示されます。ツリービューでドラッグアンドドロップすることで、親state間でActionを移動することができます。
グローバルAction
グローバルActionは、任意のstateで実行できるActionです。グローバルActionの良い例は画面の回転です:ユーザーはあなたのアプリケーションを使用中にいつでもモバイルデバイスを回転させることができるので、その実行を一つのstateに限定することはありません。
モデルにグローバルActionを追加するには、Actionの作成で示されている手順に従います。ただし、stateを選択する(ステップ1)代わりに、stateやActionが選択されていないことを確認します。何も選択せずにActionを作成すると、そのActionはグローバルActionになります。
Actionプロパティの設定
新しいActionを作成 した後、Actionプロパティを設定してその動作をカスタマイズすることができます。これらのプロパティはModelワークスペースの右ペインにあるAction Propertiesタブで編集します。
一般プロパティセクション
Action Propertiesタブの上部セクションでは、Actionの一般的なプロパティを調整できます:
- Name: 新しいActionがデフォルト名で作成されます。ここの名前を、モデルにとってよりわかりやすい名前に変更します。次の文字を除くすべての Unicode (UTF-8) 文字を使用できます。
; !- : \* = > < ^ $ , [ ] >\
. - Description: このフィールドはオプションですが、このActionについての有用な情報を記録するために使用できます。
- Type: このリストを使用してActionタイプを設定します。新しいActionは通常のタイプで作成され、これが最も一般的なActionタイプです。ただし、必要に応じてここでSequentまたはPreviousに切り替えることができます。各Actionタイプの説明については、上のActionの種類セクションを参照してください。
- SUT last modified: このリストを使用してSUTの最終更新日を設定します。Eggplant DAIが次に実行するActionを計算するとき、SUTの最終更新日以降に取得されたカバレッジのみを考慮します。
- Weight: この設定を使用すると、モデルが実行されるときにActionが実行される確率を変更できます。Actionのデフォルトの重み は100です。その値を50に変更すると、Actionは重みの値が100のActionと比べて実行される確率が半分になります。
- Action limit: この値は、テスト実行中にActionが実行される回数の上限を設定します。この設定をReset action limitチェックボックスと一緒に使用して、stateの訪問中または全体のテスト実行中にActionが実行できる回数を管理します。
新しいActionはデフォルトのAction制限値0(ゼロ)を持っています。この値はActionが訪問できる回数に制限がないことを意味します。
- Action time limit: この値は、Actionが実行するのにかかる時間(秒単位)の上限を設定します。この設定は性能テストに役立ちます。デフォルト値は0です。
- Reset action limit: このチェックボックスは、Action limitの設定がstate内の単一訪問に適用されるのか、全体のテスト実行に適用されるのかを決定します:
- 選択されている場合 、Eggplant DAIはstateを終了するたびにActionのテストカウントをリセットするため、制限はこのActionがstateを訪問するたびに実行できる回数に適用されます。
- チェックを外すと、Eggplant DAIはテスト実行全体でのActionの発生を数えます。この場合、Action limitは、このActionがテスト全体で実行できる回数を決定します。
Actionからの接続セクション
このセクションを使用して、Actionがstateに接続するように設定します。このテーブルの左側はConnection Selectionで、3つの列が含まれています:
-
state: この列はモデル内のすべてのstateをリスト化します。
-
Connection : このチェックボックスを使用して、モデルで選択したActionとstateとの間に接続を作成します。
-
Visibility : モデルに矢印が表示されないようにしたい接続に対してこのチェックボックスを選択します。モデルが複雑で、多くのActionとstateが接続されている場合、このオプションを使用するとビューを簡素化できます。この選択を行うと、接続されたstateは元のActionの下に影のボックスとして表示されます:
上記の例では、SelectTaskActionはTaskDetailstateに接続しています。
テーブルの右側のCondition for connectionセクションは、Actionがstateに接続する前に満たす必要がある条件を設定できる場所です。このセクションには3つの列が含まれています:
- Parameter: リストからParameterを選択して条件を設定します。
- Condition: Actionがstateに接続する前にParameterが満たす必要がある比較方法(つまり
<
、>
、==
)をリストメニューから選択します。 - Value: Parameterに対して評価する値を設定します。
Actionセクションによって呼び出されるスニペット
このセクションには、選択したActionにリンクした任意のスニペットがリスト表示されます。スニペットは、テスト実行中にこのActionに遭遇したときに実行されるSenseTalkコードの特定の部分です。
ActionプロパティタブのActionセクションによって呼び出されるスニペット *Action Properties tabタブのaction section によって呼び出されるSnippets *
ModelワークスペースとSnippetsタブを使用して、stateまたはActionにスニペットを追加できます。この方法でスニペットをリンクする方法については、Linking Models to Snippetsを参照してください。
Actionにアタッチしたいスニペットのパスを知っている場合は、ここに追加できます。Nameフィールドをクリックし、スニペット名を入力します。
Eggplant Snippets から DAI へのデータの受け渡し
モデル内でスニペットを実行した結果得られるデータを使用する場合は、スニペットの横にある Outputs フィールドでデータを処理するためのParameterーを指定します。戻り値ごとに 1 つのParameterを指定します。スニペットが複数の値を返す場合は、すべての戻り値を処理するParameterのカンマ区切りリストを指定します。
たとえば、注文書を生成し、新しく生成された注文の番号、state、active statusを返す次のハンドラー コードを含むスニペットを考えてみましょう。
to generate_po
return [600,"New","true"]
end generate_po
OutPuts フィールドに param0
、param1
、param2
を指定して戻り値に割り当て、そのデータをモデルで使用できます。
返される値の数とOutputs フィールドで指定されたParameterーの数が異なる場合、DAI はモデルの実行時にエラーを報告します。
ActionParameterセクション
ActionParameterは、stateとActionの値をキャプチャし、提供します。ActionにParameterを追加するには、Actionを右クリックし、リストメニューでNew Parameterを選択します。また、Actionを選択し、右ペインのActionParameterでNewをクリックすることもできます。
ActionプロパティタブのActionParameterセクション
Parameterを生成するためのプロパティを設定するには、Parameterを右クリックし、コンテキストメニューでEdit Parameter detailsを選択し、Parameter propertiesダイアログボックスを使用して基準を設定します。
-
ParameterにNameを付けます。このフィールドでは、ダブルクォートを除くすべてのUnicode文字を使用できます。
-
ParameterTypeを選択します:
-
Integer: この選択肢では、Parameterを正の整数、負の整数、またはゼロとして定義します。例えば、ユーザー数やテストケース数など、何かの数を重要視するモデルで整数Parameterタイプを使用します。
-
True or False: あなたのモデルがオンやオフ、真または偽などのブール値を必要とする場合、このタイプを使用します。
-
Real: 実数データ型は、正と負の整数と小数を受け入れます。例えば、度、ラジアン、その他の類似情報の値に対して実数データ型を使用します。
-
Text: このデータ型を使用して文字列を保存します。また、文字列として許容される文字のリストを定義するためにテキストデータ型を使用することもできます。このフィールドでは、ダブルクォートを除くすべてのUnicode文字を使用できます。
-
Set: この選択肢を使用すると、このParameterの許容値のセットを定義できます。Eggplant DAIにランタイムで特定の値リストから値を選択させたい場合、この選択肢を使用します。例えば:'春'、'夏'、'秋'、'冬'。値のリストを入力するには、Parameterを右クリックし、コンテキストメニューからEdit Parameter Detailsを選択し、Parameter PropertiesダイアログボックスのValueセクションを使用して値を設定します。このフィールドでは、ダブルクォートを除くすべてのUnicode文字を使用できます。
-
Record: この選択肢を使用すると、Eggplant DAIはCSVファイルに含まれるレコードからParameter値を読み取ることができます。File > Manage Execution Environmentsに移動して、CSVファイルが含まれるディレクトリを特定します。Eggplant DAIがこのParameterにアクセスすると、CSVファイルから1つのレコードを選択し、Parameterに保存します。
ノートCSVファイルからのデータをParameterに渡す値とし て使用する場合、CSVファイルの行が4つのカンマで区切られた値(例:"春、夏、秋、冬")を含んでいる場合、その行全体がParameterに渡されます。もしリストから特定の値、例えば"秋"だけが必要な場合は、それをパースするためにEggplant Functionalのスニペットを使用する必要があります。
-
-
ParameterのInitial Valueを設定します。RecordTypeのParameterを使用する場合、Initial Valueで選択したオプションがレコードを読み取るべき.csvファイルを決定します。
-
Eggplant DAIが使用するGenerated方法を設定します:
- Generated: Parameterタイプに基づいてParameterの新しい値を生成します。
- Generated Unique: 値を生成しますが、以前に使用された値は再利用できません。
- Generated one-time: 生成された値は一度選択され、それ以降は選択されません。値は実行中に静的に保持されます。
- Non-generated: 値は生成されず、値を含むように設定される必要があります。
-
Eggplant DAIが生成するParameterをさらに定義するためにValueグループを追加できます。値グループを値の定義として入力し、定義ごとに1行を使用します。
-
Value: このグループエントリの許容値を入力します。Parameter値を以下のように定義することができます:
- 静的な値、例えば100を入力します。
- 範囲を入力します。例えば0:100。
- リストを入力します。例えば、0, 2, 4, 6, 8。
-
Weight: このParameterを生成する際にEggplant DAIがこの値グループをどの程度の頻度で使用するか(他の値グループと比較して)を指定します。例えば、このParameterを生成する際にEggplant DAIがこの値グループを50%の頻度で使用するようにしたい場合、このフィールドに50を入力します。
-
Distribution: Eggplant DAIがこのParameterを生成するときに使用する統計分布方法を選択します:
- Flat: フラットな統計分布モデルを使用します。
- Normal: 正規の統計分布モデルを使用します。
- Edge: 統計的な外れ値を使用します。
-
Cov grps: Eggplant DAIが値のエントリを分割するために使用するセグメントの数を決定します。Eggplant DAIはデフォルトで10等分の値から始まり、値グループの値を処理し、カバレッジグループを提案します。たとえば、値として_0:360_を入力すると、Eggplant DAIは0から360までの値範囲をカバーするために、各カバレッジグループが可能な36の値を含む10のカバレッジグループを提案するかもしれません。モデルのニーズに合ったカバレッジグループ値を手動で入力できます。
-
関連タグセクション
タグはモデルについての特定のプロパティを識別します。これらのタグをActionに適用して、そのモデル内のプロパティを追跡できます。
Actionプロパティタブの関連タグセクション
このセクションの設定を使用して、モデル内のActionにタグを関連付けます。タグの作成と、モデル内のActionに作成したタグを適用する方法については、Eggplant DAIでのタグの使用を参照してください。
このActionを実行するための事前条件セクション
特定の条件が満たされた後にのみモデル実行がActionを呼び出すようにしたい場合があります。たとえば、ボタンはフィールドにデータが入力されるまで無効になる可能性があります。このケースをモデル化するためには、Parameter値に基づいて有効になるActionを作成します。
Actionプロパティタブのこのアクシティを実行するための事前条件セクション
このセクションを使用して、事前条件の評価基準を設定します。Preconditionsセクションには、選択したActionの親stateの各定義済みstateParameterと、任意のグローバルParameterが一覧表示されます。
currentStateParameterは、現在のstateの名前が含まれる特別な事前定義されたグローバルParameterです。このParameterを使用して、特定のstateからグローバルActionが呼び出されるのを防ぐことができます。例えば、QuitのためのグローバルActionがある場合、そのActionがInitialstateから呼び出されるのを防ぎたいかもしれません。
このセクションの表には、以下の情報が表示されます:
- Scope: Parameterが設定されるstateまたはモデル。
- Parameter: Parameter名。
- Type: Parameterタイプ(例:TrueまたはFalse、Integer、Text)。
- Condition: Parameter値に適用したい評価 方法 (例:
==
,>
,<
). リストから適切なメソッドを選択し、前提条件を設定する。 - Value: Parameterに対して評価する値。事前条件を設定するためにこのフィールドに値を入力します。
事前条件についての詳細情報は、Actionの事前条件の設定を参照してください。
Parameter値の設定および生成セクション
このセクションを使用して、特定のActionが実行されたときにParameter値を設定または生成します。Eggplant DAIのモデル実行が選択したActionを実行するとき、このセクションにリストされているParameterの値を変更できます。この表には、選択したActionの親stateのすべてのstateParameterとすべてのグローバルParameterが表示されます。
ActionプロパティタブのParameter値の設定および生成セクション
このセクションの表には、以下の情報が表示されます:
- Scope: Parameterが設定されるstateまたはモデル。
- Parameter: Parameter名。
- Type: Parameterタイプ(例:TrueまたはFalse、Integer、Text)。
- Operation: このリストを使用して、Actionがモデルに遭遇したときにParameter値が変更されるかどうかを決定します。選択肢は次のとおりです:
- none: (デフォルト) Parameter値は変更されません。
- set: 特定の値を設定したい場合はこのオプションを選択します。
- generate: Parameterの新しい値を生成したい場合はこの値を選択します。
- Value: Operationフィールドで新しい値を設定することを選択した場合、このリストメニューを使用して値を選択します。選択肢はParameterのタイプによって決まります。
Actionで実行するチェックセクション
このセクションを使用してParameterの値をテストし、そのテストの結果に基づいてメッセージを表示します。
ActionプロパティタブのActionで実行するチェックセクション
まず、Actionを選択します。その後、チェックを設定できます:
- 条件をテストしたいParameterを選択します。
- Conditionカラムで、Eggplant DAIにParameterの値をテストするために使用してほしい評価条件(例
<
,>
)を選択します。 - Parameter値を評価したいValueを設定します。
- 条件が満たされた場合にEggplant DAIに表示してほしいMessageを入力します。
Parameterを使用してより複雑なテストを作成することが可能です。例えば、SenseTalkスニペットからのレスポンスをキャプチャするParameterをActionに追加し、それらのレスポンスを使用して追加のParameterを作成し、それらを他のスニペットやActionに渡すことができます。
Actionとパフォーマンステスト
Action Properties tab でAction time limtを設定すると、SUTのパフォーマンスを追跡することが可能になります。テストを実行すると、これらのActionの実行時間がログに記録されます。
実行時間メッセージの例 Example of an Execution Time Message
Actionの実行時間が設定した時間制限を超えると、エラーが表示されます。
次の場合 にログメッセージがLogsタブに表示されます:
- Controller > Test Resultsでテスト結果の詳細を表示する。
- Designer > Live Runからテストを実行する。